package com.hx.template.course;

/**
 * @author Huathy
 * @date 2021-09-02 22:19
 * @description 网课模板
 */
public abstract class NetworkCourse {
    protected final void createCourse() {
        //1. 制作PPT课件
        this.createPpt();
        //2. 在线直播
        this.liveVideo();
        //3. 上传课件
        this.postNode();
        //4. 布置作业，若有，需要检查作业。是否有作业需要根据课程判断。
        if(needHomeWork()){
            checkHomeWork();
        };
    }

    /**
     * 钩子方法：实现流程的微调
     */
    protected abstract void checkHomeWork();

    protected boolean needHomeWork(){
        return false;
    };

    /**
     * 上传课件
     */
    final void postNode() {
        System.out.println("上传课件");
    }

    /**
     * 发起直播
     */
    final void liveVideo() {
        System.out.println("发起直播授课");
    }

    /**
     * 制作课件
     */
    final void createPpt() {
        System.out.println("制作课件PPT");
    }

}
